MySQL |
您所在的位置:网站首页 › insert into 多个值 › MySQL |
SQL语句分类
DQL(数据查询语言): 查询语句,凡是select语句都是DQL。
DML(数据操作语言):insert delete update,对表当中的数据进行增删改。
DDL(数据定义语言):create drop alter,对表结构的增删改。
TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)
DCL(数据控制语言): grant授权、revoke撤销权限等。
Select语句
查看表结构
desc + table_name mysql> desc dept; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | DEPTNO | int(2) | NO | PRI | NULL | | 部门编号 | DNAME | varchar(14) | YES | | NULL | | 部门名称 | LOC | varchar(13) | YES | | NULL | | 部门位置 +--------+-------------+------+-----+---------+-------+ 简单查看表中数据 简答查询语法格式: select 字段名1,字段名2,字段名3,.... from 表名; 提示: 1、任何一条sql语句以“;”结尾。 2、sql语句不区分大小写。 给查询结果的列重命名as关键字,as 关键字可以省略 select ename,sal * 12 as yearsal from emp; 查询所有字段select * from table_name; 实际开发中不建议使用*,效率较低。 mysql> select * from dept; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+ 条件查询语法格式: select 字段,字段... from 表名 where 条件; 执行顺序:先from,然后where,最后select 模糊查询模糊查询使用关键字like 在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_ %代表任意多个字符,_代表任意1个字符。 示例 找出名字当中含有O的? (在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_) %代表任意多个字符,_代表任意1个字符。 select ename from emp where ename like '%O%'; +-------+ | ename | +-------+ | JONES | | SCOTT | | FORD | +-------+ 找出名字中第二个字母是A的? select ename from emp where ename like '_A%'; +--------+ | ename | +--------+ | WARD | | MARTIN | | JAMES | +--------+ 找出名字中有下划线的? mysql> select * from t_user; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | | 2 | lisi | | 3 | WANG_WU | +------+----------+ select name from t_user where name like '%_%'; +----------+ | name | +----------+ | zhangsan | | lisi | | WANG_WU | +----------+ select name from t_user where name like '%\_%'; +---------+ | name | +---------+ | WANG_WU | +---------+ 找出名字中最后一个字母是T的? select ename from emp where ename like '%T'; +-------+ | ename | +-------+ | SCOTT | +-------+ 结果集去重distinct关键字 mysql> select distinct job from emp; // distinct关键字去除重复记录。 +-----------+ | job | +-----------+ | CLERK | | SALESMAN | | MANAGER | | ANALYST | | PRESIDENT | +-----------+ mysql> select ename,distinct job from emp; 以上的sql语句是错误的。 记住:distinct只能出现在所有字段的最前面。 排序关键字order by MySQL中默认是升序。asc表示升序,desc表示降序 语法格式 select ... from 表名 order by ... 执行顺序 select 字段 3 from 表名 1 where 条件 2 order by .... 4 order by是最后执行的。 查看当前 数据库与版本号 mysql> select database(); 查看当前使用的是哪个数据库 +-------------+ | database() | +-------------+ | swu | +-------------+ mysql> select version(); 查看mysql的版本号。 +-----------+ | version() | +-----------+ | 8.0.28 | +-----------+ 分组函数分组函数又称多行处理函数,输入多行,最终输出的结果是1行 count 计数 sum 求和 avg 平均值 max 最大值 min 最小值所有的分组函数都是对“某一组”数据进行操作 注意分组函数自动忽略NULL where中不能直接使用 select ename,sal from emp where sal > avg(sal); //ERROR 1111 (HY000): Invalid use of group function思考以上的错误信息:无效的使用了分组函数? 原因:SQL语句当中有一个语法规则,分组函数不可直接使用在where子句当中 我们用序号来表示执行的先后顺序 因为group by是在where执行之后才会执行的 select 5 .. from 1 .. where 2 .. group by 3 .. having 4 .. order by 6 .. count(*)和count(字段)的区别 count(*):不是统计某个字段中数据的个数,而是统计总记录条数。(和某个字段无关) count(comm): 表示统计comm字段中不为NULL的数据总数量 group by and havinggroup by : 按照某个字段或者某些字段进行分组。 having : having是对分组之后的数据进行再次过滤 案例:找出每个工作岗位的最高薪资 select max(sal),job from emp group by job; +----------+-----------+ | max(sal) | job | +----------+-----------+ | 3000.00 | ANALYST | | 1300.00 | CLERK | | 2975.00 | MANAGER | | 5000.00 | PRESIDENT | | 1600.00 | SALESMAN | +----------+-----------+注意: 分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。 并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。 当一条sql语句没有group by的话,整张表的数据会自成一组。 select ename,max(sal),job from emp group by job; 以上在mysql当中,查询结果是有的,但是结果没有意义,在Oracle数据库当中会报错。语法错误。Oracle的语法规则比MySQL语法规则严谨。 记住一个规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。 完整DQL语句写法数字代表执行顺序 select 5 .. from 1 .. where 2 .. group by 3 .. having 4 .. order by 6 .. insert语句语法格式: insert into 表名(字段名1,字段名2,字段名3,....) values(值1,值2,值3,....)要求:字段的数量和值的数量相同,并且数据类型要对应相同 注意: 当一条insert语句执行成功之后,表格当中必然会多一行记录。 即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行 insert语句插入数据了,只能使用update进行更新。 一次插入多行数据 insert into t_student(no,name,sex,classno,birth) values (3,'rose','1','1101','1952-12-14'), (4,'jack','1','1201','1955-12-14'); 查询结果插入表 mysql> insert into dept1 select * from dept; mysql> select * from dept1; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+ 表的复制语法: create table 表名 as select语句; 将查询结果当做表创建出来 update语句语法格式: update 表名 set 字段名1=值1,字段名2=值2... where 条件;案例 将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU update dept1 set loc = 'SHANGHAI', dname = 'RENSHIBU' where deptno = 10; mysql> select * from dept1; +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | RENSHIBU | SHANGHAI | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | | 10 | RENSHIBU | SHANGHAI | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+ 更新所有记录 update dept1 set loc = 'x', dname = 'y'; mysql> select * from dept1; +--------+-------+------+ | DEPTNO | DNAME | LOC | +--------+-------+------+ | 10 | y | x | | 20 | y | x | | 30 | y | x | | 40 | y | x | | 10 | y | x | | 20 | y | x | | 30 | y | x | | 40 | y | x | +--------+-------+------+ delete语句语法格式: delete from 表名 where 条件;注意:没有where设置条件,表中的数据将会被全部删除 如何快速删除大数据量的表在实际开发过程中,一张表可能有成千上万条记录,此时执行delete语句往往需要十多分钟,我们可以直接使用truncate截断表数据,速度在瞬间完成。 truncate table 表名 警告表被截断,不可回滚,数据永久丢失 关于删库跑路的一点看法 新闻首先我们来看两条新闻 百度 95 后程序员删库跑路被判刑,动机是工作变动及对领导不满 (baidu.com) 程序员离职当天“删库跑路”,后果很严重,法院判了 (baidu.com) 观点个人认为删库跑路的程序员不负责任,没有担当意识,“删库跑路”这种行为类似与小孩子发脾气,并且违反了相关法律法规,对自己和公司都造成了严重伤害,可以说是杀敌一千,自损一万。 赔钱事小,蹲监狱事大。 更何况还是删除数据库,给公司带来极大损失,相信以后没有公司还敢再聘用这类程序员。 一时的冲动导致编程生涯的结束,可惜。 我们还是要遵守法律法规,心有不满,可以多和领导多交流,多沟通。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |